/**
* @version 1.0
* @package FACTURAPYMES.
* @author Jorge Washington Mueses Cevallos.
* @copyright Copyright (C) 2010 por Jorge Mueses. Todos los derechos reservados.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL.
* FACTURAPYMES! es un software de libre distribución, que puede ser
* copiado y distribuido bajo los términos de la Licencia Pública
* General GNU, de acuerdo con la publicada por la Free Software
* Foundation, versión 2 de la licencia o cualquier versión posterior.
*/

package jm.adm;

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;
import jm.adm.clas.Sucursal;
import jm.seg.clas.Auditoria;

/**
 *
 * @author Jorge
 */
public class frmSucursalGuardar extends HttpServlet {
    private String _ip = null;
    private int _puerto = 5432;
    private String _db = null;

    public void init(ServletConfig config) throws ServletException
    {
        this._ip = config.getServletContext().getInitParameter("_IP");
        this._puerto = Integer.parseInt(config.getServletContext().getInitParameter("_PUERTO"));
        this._db = config.getServletContext().getInitParameter("_DB");
    }

    /**
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        HttpSession sesion = request.getSession(true);
        String usuario = (String)sesion.getAttribute("usuario");
        String clave = (String)sesion.getAttribute("clave");
        
        response.setContentType("text/html;charset=UTF-8");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Expires", "Mon, 01 Jan 2001 00:00:01 GMT");
        response.setHeader("Cache-Control", "no-store");
        response.setHeader("Cache-Control", "must-revalidate");
        response.setHeader("Cache-Control", "no-cache");
        PrintWriter out = response.getWriter();
        
        Sucursal objSucursal = new Sucursal(this._ip, this._puerto, this._db, usuario, clave);
        
        try {
            String r = "msg»El nombre de la sucursal ya existe o la dirección IP de un computador ya se encuentra en otra sucursal.";
            String WHERE = request.getParameter("WHERE");
            String p = request.getParameter("p") != null ? request.getParameter("p") : "0";
            String id = request.getParameter("id");
            String nombre_sucursal = request.getParameter("sucursal").toUpperCase();
            String ubicacion = request.getParameter("ubicacion").toUpperCase();
            String ciudad = request.getParameter("ciudad");
            String id_bodega_cliente = request.getParameter("id_bodega_cliente");
            String ips_computador = request.getParameter("ips_computador");
            String ips_red = request.getParameter("ips_red");
            String ip_servidor = request.getParameter("ip_servidor");
            String ip_inicio = request.getParameter("ip_inicio");
            String fondo_caja_chica = request.getParameter("fondo_caja_chica");
            String min_caja_chica = request.getParameter("min_caja_chica");
            String id_plan_cuenta_caja_chica = request.getParameter("id_plan_cuenta_caja_chica");
            String id_responsable_caja_chica = request.getParameter("id_responsable_caja_chica");
            //String id_plan_cuenta_gasto = request.getParameter("id_plan_cuenta_gasto");

            String liq_num_serie = request.getParameter("liq_num_serie");
            String liq_sec_desde = request.getParameter("liq_sec_desde");
            String liq_sec_hasta = request.getParameter("liq_sec_hasta");
            String liq_cad_libretin = request.getParameter("liq_cad_libretin");
            String liq_autorizacion = request.getParameter("liq_autorizacion");
            String ret_num_serie = request.getParameter("ret_num_serie");
            String ret_sec_desde = request.getParameter("ret_sec_desde");
            String ret_sec_hasta = request.getParameter("ret_sec_hasta");
            String ret_cad_libretin = request.getParameter("ret_cad_libretin");
            String ret_autorizacion = request.getParameter("ret_autorizacion");

            String not_cre_num_serie = request.getParameter("not_cre_num_serie");
            String not_cre_sec_desde = request.getParameter("not_cre_sec_desde");
            String not_cre_sec_hasta = request.getParameter("not_cre_sec_hasta");
            String not_cre_cad_libretin = request.getParameter("not_cre_cad_libretin");
            String not_cre_autorizacion = request.getParameter("not_cre_autorizacion");
            String not_deb_num_serie = request.getParameter("not_deb_num_serie");
            String not_deb_sec_desde = request.getParameter("not_deb_sec_desde");
            String not_deb_sec_hasta = request.getParameter("not_deb_sec_hasta");
            String not_deb_cad_libretin = request.getParameter("not_deb_cad_libretin");
            String not_deb_autorizacion = request.getParameter("not_deb_autorizacion");

            String estado = request.getParameter("estado");

            if(!objSucursal.estaDuplicado(id, nombre_sucursal) && !objSucursal.ipDuplicada(id, ips_computador)){
                r = "msg»Ha ocurrido un error inesperado, por favor, vuelva a intentarlo más tarde o " +
                        "contáctese con el administrador del sistema para mayor información.";
                if(id.compareTo("-1")==0){
                    String pk = objSucursal.insertar(nombre_sucursal,ubicacion,ciudad,id_bodega_cliente,ips_computador,ips_red,ip_servidor,ip_inicio,fondo_caja_chica,min_caja_chica,
                            id_plan_cuenta_caja_chica,id_responsable_caja_chica,liq_num_serie,liq_sec_desde,liq_sec_hasta,liq_cad_libretin,
                            liq_autorizacion,ret_num_serie,ret_sec_desde,ret_sec_hasta,ret_cad_libretin,ret_autorizacion,not_cre_num_serie,
                            not_cre_sec_desde,not_cre_sec_hasta,not_cre_cad_libretin,not_cre_autorizacion,not_deb_num_serie,not_deb_sec_desde,
                            not_deb_sec_hasta,not_deb_cad_libretin,not_deb_autorizacion,estado);
                    if(pk.compareTo("-1")!=0){
                        Auditoria auditoria = new Auditoria(this._ip, this._puerto, this._db, usuario, clave);
                        auditoria.setRegistro(request, "INGRESO DE LA NUEVA SUCURSAL: "+nombre_sucursal);
                        auditoria.cerrar();
                        r = "tbl»"+objSucursal.paginar("vta_sucursal", "id_sucursal,sucursal,ubicacion,ips_computador,txt_estado", WHERE, Integer.parseInt(p), 100)+
                            "^fun»adm_sucursalEditar("+pk+");^id»-1^msg»Información ingresada satisfactoriamente.";
                    }
                }else{
                    if(objSucursal.actualizar(id, nombre_sucursal,ubicacion,ciudad,id_bodega_cliente,ips_computador,ips_red,ip_servidor,ip_inicio,fondo_caja_chica,min_caja_chica,
                            id_plan_cuenta_caja_chica,id_responsable_caja_chica,liq_num_serie,liq_sec_desde,liq_sec_hasta,liq_cad_libretin,
                            liq_autorizacion,ret_num_serie,ret_sec_desde,ret_sec_hasta,ret_cad_libretin,ret_autorizacion,not_cre_num_serie,
                            not_cre_sec_desde,not_cre_sec_hasta,not_cre_cad_libretin,not_cre_autorizacion,not_deb_num_serie,not_deb_sec_desde,
                            not_deb_sec_hasta,not_deb_cad_libretin,not_deb_autorizacion,estado)){
                        Auditoria auditoria = new Auditoria(this._ip, this._puerto, this._db, usuario, clave);
                        auditoria.setRegistro(request, "ACTUALIZACION DE LA INFORMACION DE LA SUCURSAL: "+nombre_sucursal);
                        auditoria.cerrar();

                        r = "tbl»"+objSucursal.paginar("vta_sucursal", "id_sucursal,sucursal,ubicacion,ips_computador,txt_estado", WHERE, Integer.parseInt(p), 100)+
                            "^msg»Información guardada satisfactoriamente.";
                    }
                }
            }
            out.print(r);

        } finally {
            objSucursal.cerrar();
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
    * Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
